# Makefile for regression testing the GNU debugger.
# Copyright (C) 1997-2019 Free Software Foundation, Inc.

# This file is part of GDB.

# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

VPATH = @srcdir@
srcdir = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@

build_canonical = @build@
build_alias = @build_alias@
host_canonical = @host@
host_alias = @host_alias@
target_canonical = @target@
target_alias = @target_alias@
program_transform_name = @program_transform_name@

arch = @sim_arch@

SHELL = /bin/sh
SUBDIRS = @subdirs@
RPATH_ENVVAR = @RPATH_ENVVAR@

EXPECT = `if [ -f $${rootme}/../../expect/expect ] ; then \
          echo $${rootme}/../../expect/expect ; \
          else echo expect ; fi`

RUNTEST = `if [ -f $${srcdir}/../../dejagnu/runtest ] ; then \
		echo $${srcdir}/../../dejagnu/runtest ; else echo runtest; \
	   fi`

RUNTESTFLAGS =

#### host, target, and site specific Makefile frags come in here.

# The use of $$(x_FOR_TARGET) reduces the command line length by not
# duplicating the lengthy definition.

TARGET_FLAGS_TO_PASS = \
        "prefix=$(prefix)" \
        "exec_prefix=$(exec_prefix)" \
        "against=$(against)" \
        'CC=$$(CC_FOR_TARGET)' \
        "CC_FOR_TARGET=$(CC_FOR_TARGET)" \
        "CFLAGS=$(TESTSUITE_CFLAGS)" \
        "CHILLFLAGS=$(CHILLFLAGS)" \
        'CHILL=$$(CHILL_FOR_TARGET)' \
        "CHILL_FOR_TARGET=$(CHILL_FOR_TARGET)" \
        "CHILL_LIB=$(CHILL_LIB)" \
        'CXX=$$(CXX_FOR_TARGET)' \
        "CXX_FOR_TARGET=$(CXX_FOR_TARGET)" \
        "CXXFLAGS=$(CXXFLAGS)" \
        "MAKEINFO=$(MAKEINFO)" \
        "INSTALL=$(INSTALL)" \
        "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
        "INSTALL_DATA=$(INSTALL_DATA)" \
        "RUNTESTFLAGS=$(RUNTESTFLAGS)"

#        "RUNTEST=$(RUNTEST)" \

all:
	@echo "Nothing to be done for all..."

.NOEXPORT:
info:
install-info:
dvi:

install:

uninstall: force

installcheck:

check:  check-DEJAGNU check-recursive

#test1:
check-recursive: 
	@for i in . ${SUBDIRS}; do \
		if [ $$i = . ] ; then continue ; fi ; \
		if [ -d ./$$i ] ; then \
			if (rootme=`pwd`/ ; export rootme ; \
			    rootsrc=`cd $(srcdir); pwd`/ ; export rootsrc ; \
                                echo "check recursively into $$i directory..."; \
				cd ./$$i; \
				$(MAKE) $(TARGET_FLAGS_TO_PASS) check) ; then true ; \
			else exit 1 ; fi ; \
		else true ; fi ; \
	done

#test2:	
check-DEJAGNU: site.exp
	echo "Dejagnu-checking in `pwd` directory ..."
	rootme=`pwd`; export rootme; echo rootme = $$rootme; \
	srcdir=`cd ${srcdir}; pwd`; export srcdir ; echo srcdir = $$srcdir; \
	EXPECT=${EXPECT} ; export EXPECT ; echo EXPECT = $$EXPECT; \
	if [ -f $$rootme/../../expect/expect ]; then \
	  TCL_LIBRARY=`cd $$srcdir/../../tcl/library && pwd`; \
	  export TCL_LIBRARY; \
	fi; \
        echo TCL_LIBRARY = $$TCL_LIBRARY; \
	runtest=$(RUNTEST); echo runtest = $$runtest; \
	if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
	  $$runtest $(RUNTESTFLAGS); \
	else echo "WARNING: could not find \`runtest'" 1>&2; :;\
	fi


site.exp: Makefile
	@echo 'Making a new site.exp file...'
	-@rm -f site.bak
	@echo '## these variables are automatically generated by make ##' > $@-t
	@echo '# Do not edit here.  If you wish to override these values' >> $@-t
	@echo '# edit the last section' >> $@-t
	@echo 'set tool sim' >> $@-t
	@echo 'set srcdir $(srcdir)' >> $@-t
	@echo 'set objdir' `pwd` >> $@-t
	@echo 'set arch $(arch)' >> $@-t
	@echo 'set build_alias $(build_alias)' >> $@-t
	@echo 'set build_triplet $(build_canonical)' >> $@-t
	@echo 'set host_alias $(host_alias)' >> $@-t
	@echo 'set host_triplet $(host_canonical)' >> $@-t
	@echo 'set target_alias $(target_alias)' >> $@-t
	@echo 'set target_triplet $(target_canonical)' >> $@-t
	@echo '## All variables above are generated by configure. Do Not Edit ##' >> $@-t
	-@sed '1,/^## All variables above are.*##/ d' site.exp >> $@-t
	-@mv site.exp site.bak
	@mv $@-t site.exp

force:;

clean mostlyclean:
	-rm -f *~ core *.o a.out xgdb *.x *.grt
	-rm -f *.rum *.c *.dif *.*out
	if [ x"${SUBDIRS}" != x ] ; then \
	    for dir in ${SUBDIRS}; \
	    do \
		    echo "$$dir:"; \
		    if [ -d $$dir ]; then \
			    (cd $$dir; $(MAKE) clean); \
		    fi; \
	    done ; \
	else true; fi

distclean maintainer-clean realclean: clean
	-rm -f *~ core
	-rm -f Makefile config.status *-init.exp
	-rm -fr *.log summary detail *.plog *.sum *.psum site.*
	if [ x"${SUBDIRS}" != x ] ; then \
	    for dir in ${SUBDIRS}; \
	    do \
		    echo "$$dir:"; \
		    if [ -d $$dir ]; then \
			    (cd $$dir; $(MAKE) distclean); \
		    fi; \
	    done ; \
	else true; fi

Makefile : Makefile.in config.status
	$(SHELL) config.status

config.status: $(srcdir)/configure
	$(SHELL) ./config.status --recheck
# FIXME: Requires --enable-maintainer-mode, which one could add, but
# it's provided by automake.  Maybe switch to automake someday.
#$(srcdir)/configure: @MAINT@ $(srcdir)/configure.in
#	cd $(srcdir) && autoconf
